package main

import "fmt"

// 定义一个结构体
type User struct {
	name string
	age  int
	sex  string
}

// 构造函数
func NewUser(name string, sex string, age int) User {
	return User{name: name, sex: sex, age: age}
}

func main() {
	//通过结构体对象来创建
	var user1 User
	fmt.Println(user1) //空的

	//初始化的方式：
	//1.构造函数
	user1 = NewUser("张三", "男", 20)
	fmt.Println(user1)

	//2.结构体对象赋值。 xxxx.属性 = 值
	var user2 User
	user2.name = "王五"
	user2.age = 20
	user2.sex = "男"
	fmt.Println(user2)

	//获取对象中的结构体中的成员变量
	fmt.Println(user1.age)
	fmt.Println(user2.name)

	//3.创建对象
	user3 := User{}
	user3.name = "wujiang"
	user3.age = 20
	user3.sex = "男"
	fmt.Println(user3)

	//4.初始化列表
	user4 := User{
		name: "yuge",
		age:  24,
		sex:  "男",
	}
	fmt.Println(user4)

	//快速初始化列表
	//也就是隐式初始化
	user5 := User{"赵六", 20, "女"}
	fmt.Println(user5)
}
